/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tarea;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author gabrielbran
 */
public class CDAO implements Serializable {

    private List<Cliente> cliente;
    private List<Alumno> alumno;

    /* Constructor */
    public CDAO() {
        cliente = new ArrayList<Cliente>();
        alumno = new ArrayList<Alumno>();
    }

    public void agregarElemento(Object p) {

        if (p instanceof Alumno) {
            Alumno a = (Alumno) p;
            /* Metodo guardar Alumno */
            a.setId(correlativoElemento(a));
            alumno.add(a);
        } else if (p instanceof Cliente) {
            /* Metodo guardar Cliente */
            Cliente c = (Cliente) p;
            c.setId(correlativoElemento(c));
            cliente.add(c);
        }
    }

    public Object obtenerElemento(Object p) {
        if (p instanceof Alumno) {
            Alumno al = new Alumno();
            for (Alumno c : alumno) {
                if (c.getId() == al.getId()) {
                    return c;
                }
            }
        } else if (p instanceof Cliente) {

            Cliente cl = new Cliente();
            for (Cliente c : cliente) {
                if (c.getId() == cl.getId()) {
                    return c;
                }
            }
        }
        return null;
    }

    public Object modificarElemento(Object p) {
        Integer contador = 0;
        if (p instanceof Alumno) {
            Alumno al = new Alumno();
            for (Alumno a : alumno) {
                if (a.getId() == al.getId()) {
                    alumno.set(contador, a);
                }
                contador++;
            }
        } else if (p instanceof Cliente) {
            Cliente cl = new Cliente();
            for (Cliente c : cliente) {
                if (c.getId() == cl.getId()) {
                    cliente.set(contador, c);
                }
                contador++;
            }
        }
        return null;
    }

    public void eliminarElemento(Object p) {
        if (p instanceof Alumno) {
            /* Metodo guardar Alumno */
            Alumno a = (Alumno) p;
            alumno.remove(a);
        }
        if (p instanceof Cliente) {
            /* Metodo guardar Cliente */
            Cliente c = (Cliente) p;
            cliente.remove(c);
        }
    }

    private Integer correlativoElemento(Object p) {
        Integer correlativo = 0;
        if (p instanceof Alumno) {

            for (Alumno c : alumno) {
                if (c.getId() > correlativo) {
                    correlativo = c.getId();
                }
            }
        } else if (p instanceof Cliente) {

            for (Cliente c : cliente) {
                if (c.getId() > correlativo) {
                    correlativo = c.getId();
                }
            }
        }
        return correlativo;
    }

    public List obtenerLista(String tipo) {
        if (tipo.equals("Alumno")) {
            return this.alumno;
        } else if (tipo.equals("Cliente")) {
            return this.cliente;
        }
        return null;
    }
}
